package com.my.study.mq.publisher.demo;

import com.my.study.entity.User;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 普通队列生产者
 *
 * @author: yidujun
 * @create: 2021/03/16 10:52
 */
@Component
public class DefaultPublisher {

    @Resource
    private RabbitTemplate rabbitTemplate;

    /**
     * 普通队列模式
     *
     * 生产一个消息并发送到demoQueue队列中
     */
    public void sendDefaultQueue() {
        Date date = new Date();
        String dateString = new SimpleDateFormat("YYYY-mm-DD hh:MM:ss").format(date);
        System.out.println("[demoQueue] send msg: " + dateString);
        // 第一个参数为刚刚定义的队列名称
        rabbitTemplate.convertAndSend("demoQueue", dateString);
    }

    /**
     * 普通队列模式
     *
     * 传递List<String>类型
     */
    public void sendDefaultQueueList() {
        List<String> list = new ArrayList<>();
        list.add("123");
        list.add("456");
        System.out.println("[demoQueue] send msg: " + list.toString());
        // 第一个参数为刚刚定义的队列名称
        rabbitTemplate.convertAndSend("demoQueue", list);
    }

    public void sendDefaultQueueUser() {
        User user = new User();
        user.setId(1L);
        user.setUserName("ydj");
        user.setPwd("123456");
        System.out.println("[demoQueue] send msg: " + user.toString());
        // 第一个参数为刚刚定义的队列名称
        rabbitTemplate.convertAndSend("demoQueue", user);
    }

    public void sendDefaultQueueListUser() {
        List<User> list = new ArrayList<>();
        list.add(new User(2L, "qaz", "123"));
        list.add(new User(3L, "wsx", "456"));
        System.out.println("[demoQueue] send msg: " + list.toString());
        // 第一个参数为刚刚定义的队列名称
        rabbitTemplate.convertAndSend("demoQueue", list);
    }

}
